import javax.swing.JOptionPane;

import persistence.ConexaoMysql;

public class CriaBD {

	ConexaoMysql con = new ConexaoMysql();

	public CriaBD() {

		int ret = JOptionPane.showConfirmDialog(null, "Confirma Criar BD?",
				"Criar BD", JOptionPane.YES_NO_OPTION,
				JOptionPane.QUESTION_MESSAGE, null);
		if (ret == JOptionPane.YES_OPTION) {
			
			criaBds();
			JOptionPane.showMessageDialog(null, "Criado!");
		}

	}

	private void criaBds() {			
		con.conecta();
		
                con.sqlExecIns("CREATE DATABASE THREAD");
                con.sqlExecIns("USE THREAD");                
                con.sqlExecIns("CREATE TABLE IF NOT EXISTS VENDEDOR (VENCOD INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,VENNOM VARCHAR(50), VENPERCOMISS DECIMAL(5,2))");
                con.sqlExecIns("create table IF NOT EXISTS NOTA (NOTANRO INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,CLICOD INTEGER NOT NULL, CLINOM VARCHAR(50), VENCOD INTEGER NOT NULL, VENPERCOMISS DECIMAL(5,2),TOTALNF DECIMAL (12,2), TOTALMERC DECIMAL(12,2), NOTADESC DECIMAL(5,2), DATAEMISSAO DATE,PROCESSADO BOOLEAN)");
                con.sqlExecIns("CREATE TABLE IF NOT EXISTS NOTAITEM (PRIMARY KEY (`NOTANRO`, `ITEM`),NOTANRO INTEGER NOT NULL,ITEM INTEGER NOT NULL, PROCOD VARCHAR (50),PRODESC VARCHAR(100), PROQTD INTEGER(5), PROPREUNI DECIMAL(12,2), PROTOTAL DECIMAL(12,2))");
                con.sqlExecIns("ALTER TABLE NOTAITEM ADD CONSTRAINT FK_NOTA_NRO FOREIGN KEY (NOTANRO) REFERENCES NOTA(NOTANRO)");
              //  con.sqlExecIns("ALTER TABLE VENDEDOR ADD CONSTRAINT FK_VENCOD FOREIGN KEY (VENCOD) REFERENCES VENDEDOR(VENCOD)");
                con.sqlExecIns("CREATE TABLE IF NOT EXISTS PROXNOTA( NRO INTEGER NOT NULL PRIMARY KEY, DESCRICAO VARCHAR(20))");
                con.sqlExecIns("ALTER TABLE VENDEDOR ADD COLUMN venVlrComissao DECIMAL(10,2)");



		/*con.sqlExecIns("CREATE TABLE RACA (CODRACA INTEGER AUTO_INCREMENT NOT NULL, DESCRICAORACA VARCHAR(20) NOT NULL, FOTO BLOB(64000), VERSAO INTEGER, PRIMARY KEY (CODRACA))");
		con.sqlExecIns("CREATE TABLE HISTORICOSERVICO (CODIGO INTEGER AUTO_INCREMENT NOT NULL, QTD DECIMAL(12) NOT NULL, VALORSERVICO DECIMAL(12,3) NOT NULL, STATUS INTEGER NOT NULL, VERSAO INTEGER, OBSERVACAO VARCHAR(100), CODAGENDA INTEGER, CODIGOSER INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE EMPRESA (CODEMPRESA INTEGER AUTO_INCREMENT NOT NULL, FONE VARCHAR(16), IE VARCHAR(12) UNIQUE NOT NULL, BAIRRO VARCHAR(40), NUMEROEND INTEGER, COGNOME VARCHAR(40), RAZAOSOCIAL VARCHAR(100) UNIQUE NOT NULL, VERSAO INTEGER, ENDERECO VARCHAR(40), CNPJ VARCHAR(20) UNIQUE NOT NULL, CODCIDADE INTEGER, CODESTADO INTEGER, PRIMARY KEY (CODEMPRESA))");
		con.sqlExecIns("CREATE TABLE ESPECIE (CODIGO INTEGER AUTO_INCREMENT NOT NULL, DESCRICAO VARCHAR(15) NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE SERVICO (CODIGO INTEGER AUTO_INCREMENT NOT NULL, VALORSERVICO DECIMAL(12,3) NOT NULL, DESCRICAOSERVICO VARCHAR(20) NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE VETERINARIO (CODVETERINARIO INTEGER AUTO_INCREMENT NOT NULL, FONE2 VARCHAR(16), FONE3 VARCHAR(16), CODCRMV VARCHAR(15) UNIQUE NOT NULL, MAIL VARCHAR(50), SEXO INTEGER, ENDERECO VARCHAR(40), CPF VARCHAR(14) NOT NULL, BAIRRO VARCHAR(40), FONE1 VARCHAR(16), CEP VARCHAR(10), NOME VARCHAR(100) NOT NULL, NUMEROEND INTEGER, RG VARCHAR(10) NOT NULL, VERSAO INTEGER, DATANASCIMENTO DATE, CODCIDADE INTEGER, CODESTADO INTEGER, PRIMARY KEY (CODVETERINARIO))");
		con.sqlExecIns("CREATE TABLE ESTADO (CODESTADO INTEGER AUTO_INCREMENT NOT NULL, NOMEESTADO VARCHAR(40) NOT NULL, SIGLAESTADO VARCHAR(2) UNIQUE NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODESTADO))");
		con.sqlExecIns("CREATE TABLE ANIMAL (CODANIMAL INTEGER AUTO_INCREMENT NOT NULL, SEXO INTEGER, FOTO BLOB(64000), NOMEANIMAL VARCHAR(40) NOT NULL, VERSAO INTEGER, ATIVO TINYINT(1) default 0, POSSUIPEDIGREE TINYINT(1) default 0, OBSERVACAO VARCHAR(100), APELIDO VARCHAR(15), DISPONIVELCOBERTURA TINYINT(1) default 0, DATANASCIMENTO DATE, CODRACA INTEGER, CODPESSOA INTEGER, CODPELO INTEGER, CODMAE INTEGER, CODPAI INTEGER, CODVETERINARIO INTEGER, CODESPECIE INTEGER, PRIMARY KEY (CODANIMAL))");
		con.sqlExecIns("CREATE TABLE USUARIO (CODIGO INTEGER AUTO_INCREMENT NOT NULL, NOME VARCHAR(10) UNIQUE NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE CLIENTE (CODCLIENTE INTEGER AUTO_INCREMENT NOT NULL, FONE1 VARCHAR(16), FONE2 VARCHAR(16), NOMECJG VARCHAR(40), FONE3 VARCHAR(16), SEXOCJG INTEGER, MAIL VARCHAR(50), SEXO INTEGER, ENDERECO VARCHAR(40), CPF VARCHAR(14) NOT NULL, BAIRRO VARCHAR(40), CEP VARCHAR(10), NOME VARCHAR(100) NOT NULL, NUMEROEND INTEGER, RG VARCHAR(10) NOT NULL, VERSAO INTEGER, DATANASCIMENTO DATE, DATANASCCJG DATE, CODCIDADE INTEGER, CODESTADO INTEGER, PRIMARY KEY (CODCLIENTE))");
		con.sqlExecIns("CREATE TABLE AGENDAATENDIMENTO (CODAGENDA INTEGER AUTO_INCREMENT NOT NULL, VALORTOTALSERVICO DECIMAL(12,3) NOT NULL, VERSAO INTEGER, DATAAGENDA DATETIME, STATUS INTEGER, OBSERVACAO VARCHAR(100), CODCLIENTE INTEGER, CODANIMAL INTEGER, PRIMARY KEY (CODAGENDA))");
		con.sqlExecIns("CREATE TABLE PRIVILEGIO (CHAVE VARCHAR(40) NOT NULL, DOCUMENTACAO VARCHAR(255), PRIMARY KEY (CHAVE))");
		con.sqlExecIns("CREATE TABLE PRODUTO (CODPRODUTO INTEGER AUTO_INCREMENT NOT NULL, VALORPRODUTO DECIMAL(12,3) NOT NULL, VERSAO INTEGER, CODBARRAS VARCHAR(15), DESCRICAO VARCHAR(40) NOT NULL, CODFORNECEDOR INTEGER, CODGRUPO INTEGER NOT NULL, CODFRABRICANTE INTEGER, PRIMARY KEY (CODPRODUTO))");
		con.sqlExecIns("CREATE TABLE PRIVILEGIOUSUARIO (ID INTEGER AUTO_INCREMENT NOT NULL, VERSAO INTEGER, CODIGO INTEGER, CHAVE VARCHAR(40), PRIMARY KEY (ID))");
		con.sqlExecIns("CREATE TABLE CIDADE (CODCIDADE INTEGER UNIQUE AUTO_INCREMENT NOT NULL, NOMECIDADE VARCHAR(40) UNIQUE NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODCIDADE))");
		con.sqlExecIns("CREATE TABLE GRUPO (CODGRUPO INTEGER AUTO_INCREMENT NOT NULL, DESCRICAO VARCHAR(20) NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODGRUPO))");
		con.sqlExecIns("CREATE TABLE FORNECEDOR (CODFORNECEDOR INTEGER AUTO_INCREMENT NOT NULL, ENDERECO VARCHAR(40), FAX VARCHAR(16), CARGO VARCHAR(20), FONE VARCHAR(16), CNPJ VARCHAR(20) UNIQUE NOT NULL, HOMEPAGE VARCHAR(100), CONTATO VARCHAR(20), IE VARCHAR(12) UNIQUE NOT NULL, DATACADASTRO DATE, NOMEFANTASIAFORN VARCHAR(40), BAIRRO VARCHAR(40), NUMERO VARCHAR(6), COMPLEMENTO VARCHAR(100), RAZAOFORN VARCHAR(100) NOT NULL, EMAIL VARCHAR(50), VERSAO INTEGER, FONECONTATO VARCHAR(16), CEP VARCHAR(10), CODCIDADE INTEGER, CODESTADO INTEGER, PRIMARY KEY (CODFORNECEDOR))");
		con.sqlExecIns("CREATE TABLE PELAGEM (CODIGO INTEGER NOT NULL, DESCRICAO VARCHAR(20) UNIQUE NOT NULL, VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE HISTORICOPRODUTO (CODIGO INTEGER AUTO_INCREMENT NOT NULL, VALORPRODUTO DECIMAL(12,3) NOT NULL, VERSAO INTEGER, QTD DECIMAL(12) NOT NULL, CODAGENDA INTEGER, CODPRODUTO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("ALTER TABLE HISTORICOSERVICO ADD CONSTRAINT FK_HISTORICOSERVICO_CODIGOSER FOREIGN KEY (CODIGOSER) REFERENCES SERVICO (CODIGO)");
		con.sqlExecIns("ALTER TABLE HISTORICOSERVICO ADD CONSTRAINT FK_HISTORICOSERVICO_CODAGENDA FOREIGN KEY (CODAGENDA) REFERENCES AGENDAATENDIMENTO (CODAGENDA)");
		con.sqlExecIns("ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_CODESTADO FOREIGN KEY (CODESTADO) REFERENCES ESTADO (CODESTADO)");
		con.sqlExecIns("ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_CODCIDADE FOREIGN KEY (CODCIDADE) REFERENCES CIDADE (CODCIDADE)");
		con.sqlExecIns("ALTER TABLE VETERINARIO ADD CONSTRAINT FK_VETERINARIO_CODESTADO FOREIGN KEY (CODESTADO) REFERENCES ESTADO (CODESTADO)");
		con.sqlExecIns("ALTER TABLE VETERINARIO ADD CONSTRAINT FK_VETERINARIO_CODCIDADE FOREIGN KEY (CODCIDADE) REFERENCES CIDADE (CODCIDADE)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODPESSOA FOREIGN KEY (CODPESSOA) REFERENCES CLIENTE (CODCLIENTE)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODESPECIE FOREIGN KEY (CODESPECIE) REFERENCES ESPECIE (CODIGO)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODPELO FOREIGN KEY (CODPELO) REFERENCES PELAGEM (CODIGO)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODVETERINARIO FOREIGN KEY (CODVETERINARIO) REFERENCES VETERINARIO (CODVETERINARIO)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODPAI FOREIGN KEY (CODPAI) REFERENCES ANIMAL (CODANIMAL)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODMAE FOREIGN KEY (CODMAE) REFERENCES ANIMAL (CODANIMAL)");
		con.sqlExecIns("ALTER TABLE ANIMAL ADD CONSTRAINT FK_ANIMAL_CODRACA FOREIGN KEY (CODRACA) REFERENCES RACA (CODRACA)");
		con.sqlExecIns("ALTER TABLE CLIENTE ADD CONSTRAINT FK_CLIENTE_CODCIDADE FOREIGN KEY (CODCIDADE) REFERENCES CIDADE (CODCIDADE)");
		con.sqlExecIns("ALTER TABLE CLIENTE ADD CONSTRAINT FK_CLIENTE_CODESTADO FOREIGN KEY (CODESTADO) REFERENCES ESTADO (CODESTADO)");
		con.sqlExecIns("ALTER TABLE AGENDAATENDIMENTO ADD CONSTRAINT FK_AGENDAATENDIMENTO_CODCLIENTE FOREIGN KEY (CODCLIENTE) REFERENCES CLIENTE (CODCLIENTE)");
		con.sqlExecIns("ALTER TABLE AGENDAATENDIMENTO ADD CONSTRAINT FK_AGENDAATENDIMENTO_CODANIMAL FOREIGN KEY (CODANIMAL) REFERENCES ANIMAL (CODANIMAL)");
		con.sqlExecIns("ALTER TABLE PRODUTO ADD CONSTRAINT FK_PRODUTO_CODGRUPO FOREIGN KEY (CODGRUPO) REFERENCES GRUPO (CODGRUPO)");
		con.sqlExecIns("ALTER TABLE PRODUTO ADD CONSTRAINT FK_PRODUTO_CODFRABRICANTE FOREIGN KEY (CODFRABRICANTE) REFERENCES FORNECEDOR (CODFORNECEDOR)");
		con.sqlExecIns("ALTER TABLE PRODUTO ADD CONSTRAINT FK_PRODUTO_CODFORNECEDOR FOREIGN KEY (CODFORNECEDOR) REFERENCES FORNECEDOR (CODFORNECEDOR)");
		con.sqlExecIns("ALTER TABLE PRIVILEGIOUSUARIO ADD CONSTRAINT FK_PRIVILEGIOUSUARIO_CHAVE FOREIGN KEY (CHAVE) REFERENCES PRIVILEGIO (CHAVE)");
		con.sqlExecIns("ALTER TABLE PRIVILEGIOUSUARIO ADD CONSTRAINT FK_PRIVILEGIOUSUARIO_CODIGO FOREIGN KEY (CODIGO) REFERENCES USUARIO (CODIGO)");
		con.sqlExecIns("ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_CODESTADO FOREIGN KEY (CODESTADO) REFERENCES ESTADO (CODESTADO)");
		con.sqlExecIns("ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_CODCIDADE FOREIGN KEY (CODCIDADE) REFERENCES CIDADE (CODCIDADE)");
		con.sqlExecIns("ALTER TABLE HISTORICOPRODUTO ADD CONSTRAINT FK_HISTORICOPRODUTO_CODPRODUTO FOREIGN KEY (CODPRODUTO) REFERENCES PRODUTO (CODPRODUTO)");
		con.sqlExecIns("ALTER TABLE HISTORICOPRODUTO ADD CONSTRAINT FK_HISTORICOPRODUTO_CODAGENDA FOREIGN KEY (CODAGENDA) REFERENCES AGENDAATENDIMENTO (CODAGENDA)");
		con.sqlExecIns("CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(38), PRIMARY KEY (SEQ_NAME))");
		con.sqlExecIns("INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 1)");
		con.sqlExecIns("CREATE TABLE PATOLOGIA (CODIGO INTEGER AUTO_INCREMENT NOT NULL, SINTOMAS VARCHAR(250), TRATAMENTO VARCHAR(250), NOME VARCHAR(250), VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		con.sqlExecIns("CREATE TABLE MEDICAMENTO (CODIGO INTEGER AUTO_INCREMENT NOT NULL, PRINCIPIOATIVO VARCHAR(255), CLASSETERAPEUTICA VARCHAR(255), LABORATORIO VARCHAR(255), BULA VARCHAR(255), NOME VARCHAR(255), PRESCICAO VARCHAR(255), TIPOANIMAL INTEGER, VERSAO INTEGER, PRIMARY KEY (CODIGO))");
		*/
                con.desconecta();
		
	}

	public static void main(String[] args) {
		new CriaBD();
	}

}
